'''集合的相关操作'''
# str = "123432345765yhg"
# s = set (str)#集合
# print(s)#去重，乱序
# # L = [2,6,67,90,6,2,90]
# t = (3,4,9,5,1,0)
# d = {"name":"张三","age":20}
# s = set(d)
# print(s)
#集合只能存储不可变类型，他本身是可变类型所以他只能存储不可变类型
#常用函数：s.add(obj)添加元素，s.clear()清空,s.copy,s.pop出栈（删除并返回某个随机元素，若集合为空就报错）
#s.remove(obj),若没有这个元素就报错
#s.discard(obj),删除元素，若没有，就不会进行任何操作

# str = "eg1145699999"
# s = set (str)
# print(s)
# s.add("0""0""7""5")
# print(s)
# # s.clear()
# # s.copy(t[0])
# # s.pop()
# print(s)
# # s.remove("q")
# s.discard("v")
# print(s)

# A = {1,6,3,8,42,77,99}
# B = {1,56,567,6,8,99,1}
# C = {1}
# temp = C.issubset(B)
# print(temp)
# temp = A.union(B)
# print(temp)
# temp = A.intersection(B)
# print(temp)
# temp = B.difference(A)
# print(temp)
# temp = A.symmetric_difference(B)
# print(temp)

#经理人员
# A={"宋江","吴用","卢俊义","燕青","李逵","武松"}
# #技术人员
# B={"吴用","时迁","鲁智深","林冲","阮小七","燕青","刘唐"}
# temp = A.intersection(B)
# print(temp)
# print(A&B)
# #林冲是经理吗
# if "林冲" in A:
#     print("林冲是经理")
# else:
#     print("不是")
# #谁身兼一职
# print(A^B)

#frozenset（固定集合） 在普通集合的基础之上规定了不可变











'''函数'''
# def 函数名（参数列表）：
#     return

# 函数名就是语句块的名称
# 函数名的命名规则和变量相同（小写字母，单词之间使用）
# 函数有自己的命名空间
# 函数的参数列表可以为空

def myfun (a):
    i = 0
    while i <10:
        a = (a+1)*2
        i += 1
        print("第",i+1,"吃了",a,"个桃子")
myfun (9)



# def myfun2 (a):
#     temp = a/2
#     i = 1
#     sum = 0
#     while i<=temp:
#         sum +=i
#     print(sum)

# def if_perfect(x):
#     L = []
#     for j in range(1,x):
#         if x%j == 0:
#             L.append(j)
#     if sum(L) == x:
#         return True
#     else:
#         return False
# L = []#用来存储所有的完全数
# for i in range(1,1001):
#     if if_perfect(i):
#         L.append(i)



'''局部变量和全局变量'''
#当局部使用全局变量时，要保证全局变量在函数的定义之前。全局变量的命名规范g_name
# wendu = 30
#
# def f1():
#     global wendu #global能让局部变量变为全局变量
#     wendu = 25
#     print("f1",wendu)
# f1()
# print(wendu)

#序列传参
# def f1(a,b,c):
#     print(a,b,c)
# # f1(*"1w3")
# # f1(*[1,4])
# f1(*(1,6))

#字典传参--本质就是关键字传参
# def f1(a,b,c):
#     print(a,b,c)
# # d = {"aa":1,"bb":2,"cc":3}
# # d = {"9":1,"8":2,"7":3}
# d = {"a":1,"b":2,"f":3}
# f1(**d)

# def f1(a,b,c):
#     print(a,b,c)
# # f1(100,*[200,300])#位置传参+序列传参 本质就是位置传参
# # f1(*"12",200)
# f1(5,b=2,c=4)



'''定义函数时，形参的定义规则'''

# '''缺省的形参'''
# def f(形参1，形参2=缺省值，型参3=缺省值...)：
# 有缺省值的形参必须从右往左一次存在，不能一下有一下没有
# def info(name, age=1, addr="北京"):
#     print(name,"今年",age,"住址", addr)
# info("张三")

# def f1 (x,y,z=None):
#     if z is None or z==0:
#         return x+y
#     else:
#         return (x+y)%z



# '''*星号元组形参'''
# 以元组的形式来接收实参
# def f (*args):
#     print(args)
#     print("最大值：",max(args))
# f(1,3,7976765,23445,33567)



# '''命名关键字形参'''
# def f(*arges,命名形参):(约束了星号后面必须用关键字传参）
# *arges 必须填值，*后面必须用关键字传参
# def f(a,b,*args,d,e):
#     print(a,b,*args,d,e)
# f(1,2,3,5,3,d=100,e=300)



# '''**双星号字典形参'''
# # def f(**字典形参):必须为关键字的形式
# def f(**kwargs):
#     print(kwargs)
# f(a=1,b=9)


# def f(a,b,*args,c,**kwargs):
#     print(a,b,args,c,kwargs)
# f(18,5,34,234,c=44,d=13,g=99)

# def f (*args,**kwargs):
#     print(args,kwargs)
# f (1,34,45,34,a=344,f=3)

#模拟range函数，写一个myrange(),返回列表
# def my_range(start,stop=0,step=1):
#  L = []
#  start = start-1
#  if stop == 0 or stop is None:
#     stop = start
#     while start>=0:
#         L.append(start)
#         start-=1
#         L.sort()
#     print(L)
#  # else:
#  #     while x>0 and y>:
# my_range(9)
